/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.ufpb.halloc.negocio;

import br.com.ufpb.halloc.exceptions.HorarioIndisponivelException;
import br.com.ufpb.halloc.exceptions.HorarioNaoAlocadoException;

/**
 *
 * @author leonardo
 */
public interface Horario {
    
    /** Segunda-feira */
    public static final int SEG = 0;
    /** Terça-feira */
    public static final int TER = 1;
    /** Quarta-feira */
    public static final int QUA = 2;
    /** Quinta-feira */
    public static final int QUI = 3;
    /** Sexta-feira */
    public static final int SEX = 4;
    
    /** 8 horas */
    public static final int PRIMEIRO = 0;
    /** 10 horas */
    public static final int SEGUNDO = 1;
    /** 13 horas */
    public static final int TERCEIRO = 2;
    /** 15 horas */
    public static final int QUARTO = 3; 
    /** 19 horas */
    public static final int QUINTO = 4; 
    /** 21 horas */
    public static final int SEXTO = 5; 
    
    //total de linhas
    public static final int TLINHAS = 6;
    //total de colunas
    public static final int TCOLUNAS = 5;
    
    
    // métodos
    
    //aloca um horário na matriz
    public void alocarHorario(int hora, int dia, Object obj) throws HorarioIndisponivelException;
    
    //remove um horário na matriz
    public void removerHorario(int hora, int dia, Object obj) throws HorarioNaoAlocadoException;
    
    //verifica se um horário está disponível
    public boolean ehLivre(int hora, int dia);
    
    //retorna o objeto que está alocado neste horário
    public Object getAlocado(int hora, int dia) throws HorarioNaoAlocadoException;
    
}
